package structures.sort;

import java.util.Arrays;

public class SelectSortDemo {
    private static final int LENGTH = 6;

    public static void main(String[] args) {
        // 生成数据
        int[] data = new int[LENGTH];
        for (int index = 0; index < data.length; index++) {
            data[index] = (int) (Math.random() * LENGTH);
        }

        // 打印数据
        System.out.println(Arrays.toString(data));

        long startTime = System.currentTimeMillis();
        select(data);
        System.out.println("----------------消耗时间: " + (System.currentTimeMillis() - startTime) + " ms------------");

        // 打印数据
        System.out.println(Arrays.toString(data));
    }



    /**
     * 选择排序  相对于冒泡排序 时间复杂度是一样的  只是减少了中间的交换值得问题
     * @param data
     */
    private static void select(int[] data) {

        for (int i = 0; i < data.length - 1; i++) {
            int minValue = data[i];
            int minIndex = i;
            for (int j = i; j < data.length; j++) {
                if (minValue > data[j]) {
                    minValue = data[j];
                    minIndex = j;
                }
            }
            if (i != minIndex) {
                data[minIndex] = data[i];
                data[i] = minValue;
            }
        }
    }

}
